//Operazione da eseguire per lanciare l'editor con amazon

exports.amazon = function(db, options, titolo, time, cr, callback){
	db.listTables({}, 
        function(err, data){  
            for (var i=0; i<=data.TableNames.length; i++){
                if (data.TableNames[i] == options.db.amazon_dynamo_operations_table_name+"_"+titolo) {
                	//controllo lo stato
                    db.describeTable({ 
                        TableName: data.TableNames[i]
                    	}, 
                    	function(err, data){
                        	//se la tabella è ACTIVE posso andare
                        	if (data.Table.TableStatus == "ACTIVE"){
                            	console.warn('fatto');
                            	callback();
                        	}
                        	//se la tabella è CREATING devo aspettare che diventa ACTIVE
                        	else if (data.Table.TableStatus == "CREATING") {
                            	setTimeout(function(){waitTableReady()},(time/2));
                        	}
                        	//se la tabella è DELETING devo aspettare che venga cancellata per poi crearla
                        	else if (data.Table.TableStatus == "DELETING") {
                            	setTimeout(function(){waitTableReady()}, (time/3));
                        	}
                    	}
                    );
                    break;
                }
                else if (data.TableNames[i] == undefined) {
                    cr.create(db, options, titolo, function() {
                    	//invoco la mia wait personale
                        setTimeout(function () {
                            db.describeTable({ 
                                TableName: options.db.amazon_dynamo_operations_table_name+'_'+titolo
        	                    }, function(err, data){
                                    if (data.Table.TableStatus == "ACTIVE"){
                                        console.warn('fatto');
                            			callback();
                                    }
                                    else {
                                        waitTableReady();
                                    }
                                }
                            );
                        }, time);
                    });
                }
            }
        }
    );
    function waitTableReady(){
        db.describeTable({ 
            TableName: options.db.amazon_dynamo_operations_table_name+'_'+titolo
        	}, function(err, data){
                if (data == null){
                    cr.create(db, options, titolo, function() {
                        //invoco la mia wait personale
                        setTimeout(function () {
                            db.describeTable({ 
                                TableName: options.db.amazon_dynamo_operations_table_name+'_'+titolo
                                }, function(err, data){
                                    if (data.Table.TableStatus == "ACTIVE"){
                                        console.warn('fatto');
                            			callback();
                                    }
                                    else {
                                        waitTableReady();
                                    }
                                }
                            );
                        }, time);
                    });
                }
                else {
                    if (data.Table.TableStatus == "ACTIVE"){
                        console.warn('fatto');
                        callback();
                    }
                    else {
                        waitTableReady();
                    }
                }
            }
        );
    };
}